Fedora: OSTree Native Container
Pour cette article, je voudrai parler d'une fonctionnalité qui va arriver dans la prochaine version de Fedora: La phase deux du "OSTree Native Container"
Pour résumer: Les versions de Fedora dites "immutable", tel que CoreOS, Silverblue, IoT, etc, vont utiliser le format d'image Docker/OCI pour distribuer le système d'exploitation.
Distribution classique des logiciels sur Fedora
Pour rappelle, Fedora est une distribution GNU/Linux qui distribue ses logiciels de façon classique: Chaque logiciel, bibliothèque, documentation, pack d'icônes, etc, est distribué sous la forme d'une archive séparée. Cette archive s'appelle un paquet.
En cas de mise à jour, ou d'installation, ces archives sont téléchargées depuis un dépôt. Un espace de stockage distant où se trouve une copie de ces paquets.
Après téléchargement, la signature GPG de chaque paquet est vérifiée et, si elle est correcte, l'archive est décompressée au bon endroit sur le système de fichier. Si nécessaire, un ou plusieurs scripts peuvent également être exécutés.
Le format utilisé pour ces paquets est RPM.
Systèmes immutables et RPM-OSTree
Mais il existe des versions de Fedora qui utilisent un autre système: RPM-OSTree.
L'idée est de séparer les logiciels en 2 catégories:
- Système d'exploitation
- Applications et logiciels
Systèmes d'exploitation
Tout les logiciels qui concernent le système d'exploitation ne sont plus récupérés par celui-ci sous la forme de paquets. À la place, ils le sont sous la forme d'une seule image contenant tout ce dont le système à besoin.
Quand l'ordinateur est démarré, cette image est utilisée, en lecture
seul, pour créer le système de fichier. D'où le nom "immutable". Seul
certains dossiers, comme /home/
, /etc
ou /var/
, sont montés à
partir de partitions séparés et en lecture/écriture.
En cas de mise à jour du système, seul la différence entre l'image actuelle et la nouvelle sera téléchargée. La mise à jour est ensuite appliquée de tel sorte qu'elle sera utilisée au prochain démarrage. L'image sur laquelle le système fonctionne à ce moment, elle, reste non modifiée tant qu'on ne redémarre pas.
Applications et logiciels
Avantages
Cette solution à l'avantage de proposer un système plus stable: Rien ne le modifie tant qu'on ne le redémarre pas. Et en cas de problème au prochain démarrage, le système peut le détecter et redémarrer sur la précédente image.
Format de l'image
L'image système utilise RPM-OSTree: Un hybride entre une image et des paquets RPM. Pour faire simple, en utilisant libostree, une image est créée par le projet Fedora à partir de paquets RPM. C'est cette image qui est téléchargée et utilisée par le système d'exploitation. Une fois installée, cette image peut toujours être modifiée avec des paquets RPM, mais un redémarrage est nécessaire pour que ces modifications soient appliquées.
Version de Fedora utilisant RPM-OSTree
Voici les versions de Fedora qui utilisent ce système:
Le nouveau format pour les images système
Comme on l'a vu, RPM-OSTree utilise sont format d'image. Ce qui fait un format de plus, à coté des RPM et des images OCI pour Docker et Podman.
Pour réduire le nombre de formats utilisés, les images systèmes utiliserons bientôt le format d'image OCI. OSTree sera modifié pour utiliser ce format et le logiciel bootc a été créé pour gérer le démarrage et les mises à jour au démarrage.
Par contre, pour les signatures GPG, l'infrastructure reposant sur OSTree sera toujours utilisé.
Avantages
Pour l'utilisateur ou l'utilisatrice: L'avantage est la création d'images système dérivées ou créée à partir de zéro. Et de pouvoir le faire avec des logiciels déjà connus et massivement utilisés tel que Docker, Podman ou Buildah.
Un autre avantage sera la création d'un ISO qui installera une version personnalisé de l'image système. Ce qui peut être très pratique quand on doit gérer un parc d'un grand nombre d'ordinateurs.
D'après ce que j'ai pu lire, on ne peux pas utiliser les images de distribution GNU/Linux déjà existantes sans modification. Mais j'attends la sortie de Fedora 39 pour lire attentivement la documentation. En théorie, on devrait pouvoir créer des images système d'autres distributions pouvant démarrer.
Si d'autres distributions GNU/Linux adoptent ce mode de fonctionnement et ce format d'image, on pourra facilement passer d'une distribution à l'autre en gardant le même noyau et mutualiser une partie de ce qui gère le système, sa distribution et ses mises à jour.
Pour la plupart des utilisatrices et utilisateurs, il ne sera plus nécessaire de comprendre et utiliser OSTree. Seul des connaissance de RPM et des conteneurs seront nécessaires.
Enfin, pour le projet Fedora, l'avantage est aussi la ré-utilisation d'un format déjà utilisé par ses membres. Ce qui simplifie leur infrastructure.
Phase 1 sur Fedora 36, phase 2 pour Fedora 39
Lors de la sortie de Fedora 36, cette fonctionnalité était disponible sous forme de "preview". La pile OSTree a été modifiée pour supporter le format d'image OCI/Docker et RPM-OSTree à été mis à jour pour l'utiliser.
Pour la version 39 de Fedora, la phase 2, dite "stable", est prévue. Pour cette version:
- La partie RPM-OSTree est considéré comme stable
bootc
est maintenant utilisé- Les versions de Fedora utilisant OSTree sont modifiée pour utiliser une image OCI
- RPM-OSTree est modifié pour avoir une CLI compatible avec les commandes yum et DNF
- La nouvelle fonctionnalité est accessible par les commandes
bootc
etdnf image
- Support ajouté à Anaconda et à d'autres outils
- Génération d'images avec lesquels on peut démarrer
- Documentation sur comment générer des images dérivée
Conclusion
Le passage au format d'image OCI/Docker rend l'utilisation des versions "immutable" de Fedora plus facile. Ça rend également plus facile la création de versions dérivées. Le tout en utilisant des outils et compétences déjà connu et largement utilisés.
Quand la version stable de Fedora 39 sera sorti, je ferai un essaie et j'essayerai d'en faire un article détaillé.